import { loginAPI, getUserinfoAPI, getUserAPI2 } from '@/api/user'
import { getToken, removeToken, setToken } from '@/utils/auth'
import { resetRouter } from '@/router'
const state = {
  token: getToken() || '',
  userInfo: {} // 初始化对象保存用户信息
}
const getters = {}
const mutations = {
  // 修改state 里 token的方法
  setToken1(state, newToken) {
    state.token = newToken
    setToken(newToken)
  },
  // 添加用户信息
  setUserinfo(state, newUserinfo) {
    state.userInfo = newUserinfo
  },
  // 退出操作 需要移除token 需要清除用户信息
  logout(state) {
    state.token = ''
    removeToken() // cookei的方法 移除token的
    state.userInfo = {}
    resetRouter() // 退出时清空路由规则
  }
}
const actions = {
  login(store, loginForm) {
    return new Promise((resolve, reject) => {
      // 调用登录接口 发送请求
      loginAPI(loginForm).then((res) => {
        // console.log(res)
        // 调用上边的方法传递token
        store.commit('setToken1', res.data)
        resolve(res)
      }).catch(err => {
        reject(err)
      })
    })
  },
  // async 函数会默认返回一个promise对象  就省了new Promise了
  async getUserinfo(store) {
    // 调获取用户信息接口
    const res = await getUserinfoAPI()
    // 调用获取用户信息接口2 包含头像
    const res1 = await getUserAPI2(res.data.userId)
    // res1.data.staffPhoto = 'http://www.baidu.com/xxxx' // 修改错误的图片信息
    const userData = { ...res.data, ...res1.data } // 合并用户信息接口数据
    store.commit('setUserinfo', userData) // 调用同步方法 储存数据
    // 下面return res.data是为了八天后使用
    return userData
  }
}

export default {
  namespaced: true,
  state,
  getters,
  mutations,
  actions
}
